你要推一個 App,想貼一條連結出去。iPhone 的人點了要進 App Store,Android 的人要進 Google Play,用電腦看到的那些人只能給他網頁版。
一個做法是貼三條,旁邊註明哪一條給誰。另一個做法是在中間擋一頁,上面放三顆按鈕,讓人自己認領「我用 iPhone」還是「我用 Android」,這種攔一道的頁面叫中間頁。前者會讓人點錯,後者多一次點擊,兩種都會掉人。
還有第三種做法,貼一條就好,讓它自動分流判斷。這是 Day 22〈後台設計大改版:用不順的地方,其實只有幾個原因〉 那一輪改版之後,我做的第一個新功能。
後台新增或編輯連結的時候,把「分流」點開,裡面是三種欄位,加上底下鎖住的預設。
https://apps.apple.com/…,因為這一格十次有九次就是拿來填商店連結的。https://play.google.com/…。
前面三格各自獨立,改其中一格不會動到另外兩格。
判斷的順序是固定的,iOS、Android、國家、預設,先中先走。每一位訪客只會命中其中一條,不會兩條疊在一起。
三種欄位怎麼填、順序怎麼判,toui 的常見問題裡有三則專門講這個,設定前可以先看一眼。
對點的人來說,這一切都不存在。沒有中間頁、沒有請他先選裝置的按鈕,他看到的還是一次普通的轉址。永遠是 302,那個選擇背後的理由 Day 4〈301 轉址和 302 差在哪〉 已經說完了。
因為裝置排在國家前面,只要你填了 iOS 那一格,全世界的 iPhone 都會去同一個地方,包括台灣的。你沒辦法在同一條連結上做出「台灣的 iPhone 去 A、美國的 iPhone 去 B」。
真的需要這種組合,可以把兩條連結串起來,iOS 那一格填的不是商店網址,而是另一條只設了國家規則的短連結。第二條連結沒有填 iOS 那一格,所以裝置那一層不會命中,它接手之後就直接判斷國家。點的人還是點一條,中間多轉一次,他不會察覺。
不過多數時候你不必這樣做。App Store 和 Google Play 本來就會照訪客帳號的所在地顯示當地的商店頁面,你把人帶到門口,剩下的它們自己會處理。
判斷裝置這件事,聽起來像是讀一下瀏覽器送過來的識別字串(也就是 User-Agent)就結束了。實際上有一種裝置是讀不出來的。
現在的 iPad 預設用「桌機級」的 Safari,它送出來的識別字串裡不會出現 iPad 這個詞,看起來就是一台 Mac。這不是 bug,是 Apple 刻意讓它這樣,為的是讓網站給 iPad 完整版的畫面而不是手機版。
於是設計的時候要做一個選擇,把這種看起來像 Mac 的請求猜成 iOS,還是不猜。
toui 不猜。程式只認明確帶著 iPad 的那一種,其餘一律當成認不出裝置,於是它不會命中 iOS 也不會命中 Android,繼續往下走國家規則,再往下就是預設。猜錯的代價是把一個坐在電腦前面的人丟進 App Store,而不猜的代價只是他看到網頁版,兩邊不對等。
搜尋引擎的爬蟲也歸在認不出這一類,就算識別字串裡帶著 Android 也一樣——Google 的手機版爬蟲正是這種。
我拿十種識別字串實際打了同一條連結,結果是這樣:
| 送出去的識別字串 | 結果 |
|---|---|
| iPhone | 命中 iOS |
iPad(帶 iPad 字樣) |
命中 iOS |
| 桌機模式的 iPad/Mac | 認不出裝置,往下走 |
| Android 手機 | 命中 Android |
| Android 平板 | 命中 Android |
| 桌機 Chrome | 認不出裝置,往下走 |
| 沒有識別字串 | 認不出裝置,往下走 |
| Google 手機版爬蟲 | 認不出裝置,往下走 |
| Facebook 預覽爬蟲 | 不進分流,直接拿預設 |
| LINE 預覽爬蟲 | 不進分流,直接拿預設 |
最後兩列跟上面八列不一樣,它們連分流都沒有進去。
社群平台來抓預覽的爬蟲,不會進入分流。這一關比前面那四層更早,它根本走不到判斷裝置那一步,拿到的一律是你填的預設網址。
這是刻意的。分享一條連結到 LINE 或 Facebook 的時候,跳出來的那張卡片是平台自己去抓的,如果讓爬蟲也走分流,卡片的標題和圖就會變成某一種裝置看到的那一版,而看到那張卡片的人裝置各不相同。讓卡片一律代表預設網址,是唯一講得通的做法。
分流管的是人點下去之後要去哪裡,不管這條連結被分享出去時長什麼模樣。那張卡片本身其實也能換,換成你自己指定的標題和圖,不過那是另一個功能,Day 10〈LINE 連結縮圖更改:顯示哪一張圖,可以由你決定〉 專門在講。
你會知道這條被點了幾次、來自哪些國家、用什麼裝置,但不會有一欄告訴你「其中幾次走了 iOS 那條」。這是設計上的取捨,要拆開就建兩條連結,各自標各自的。
通常幾秒之內就換過來,慢的時候要等一下。原因是這些規則同時放在世界各地的機房裡,好讓轉址在哪裡都快,而各地是各自更新的,你改完的那一刻不是每個地方同時看到新規則。實務上你不用重發連結,也不用重新產生 QR code,改完就是了。想確認換過來了沒有,最直接的方法是拿手機自己點一次,再用電腦點一次。
設分流的時候,最花時間的是規則本身,iPhone 去哪、台灣去哪、美國去哪。你想得到幾條規則,就能規劃流量往哪裡走。
但總有想不到的情況——桌機模式的 iPad、讀不到所在地的連線。它們最終還是要有個落地之處,它應該是不管誰落進來都說得通的那一頁,通常就是你的官網或產品頁。